/**
 * Created by 刘丹 on 2019年10月29日 0029.
 * 病历模块公用方法
 */
import { getParentNode, creatUid } from '@/utils'

/**
 * 获取插入组件的配置
 *
 * @param {string|json} data required
 */
const getComponentConfig = (data) => {
  let defaultConfig = {
    type: data.type || data, // 组件的类型
    label: data.label || '', // 组件的标题名称
    print: data.print || true, // 是否打印
    required: data.required || false, // 是否必填
    readonly: data.readonly || false, // 是否只读
    key: data.id || '', // 数据源的key值
    defaultValue: data.defaultValue || '', // 插入组件的默认值
    id: creatUid()
  }
  const type = defaultConfig.type
  switch (type) {
    case 'input':
      defaultConfig.textType = data.textType || 'text'
      defaultConfig.renex = data.renex || '' // 正则
      break
    case 'radio':
    case 'checkbox':
    case 'select':
      defaultConfig.datas = data.datas || [] // 单选多选下拉的选择数据
      defaultConfig.dataUrl = data.dataUrl || '' // 单选多选下拉数据的接口时
      if (type === 'select') {
        defaultConfig.selectType = data.selectType || 'single' // 单选还是多选 single,multiple
      }
      break
    case 'timeinput':
      defaultConfig.textType = data.textType || 'yyyy-MM-dd hh:mm:ss'
      break
    case 'region':
      delete defaultConfig.readonly
      delete defaultConfig.required
      defaultConfig.pattern = data.pattern || 'design' // 控件域的模式 design readonly edit
      break
  }
  return defaultConfig
}
/**
 * 插入组件的方法
 *
 * @param data string|json 插入组件的参数
 * @param editor Object 编辑器对象
 */
export const insertComponent = (data, editor) => {
  const config = getComponentConfig(data)
  console.log(config)
  const objStr = JSON.stringify(config).replace(/\"/g, '\'') // eslint-disable-line
}
/**
 * 获取病历组件数据
 *
 * @param event
 * @returns {Object}
 */
export const getPluginData = (event) => {
  const target = event.target || event.srcElement
  const curentPlugin = getParentNode(target, 'case-plugin')
  if (curentPlugin) {
    return curentPlugin.getAttribute('obj')
  }
  return {}
}
